package w83b.w83bManager;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;


import w83b.w83bBeans.W83bUsuarioXLNetsBean;
import w83b.w83bBeans.W83bVocesBean;
import w83b.w83bDAO.W83bFactoriaDAO;


public class W83bVoces implements W83bIVoces {

	public String anyadirVoces(W83bVocesBean param) throws Exception {
		

		String resultado = "0";	
		//no voy a ver si he introducido un código de tipo voz ya que en el futuro se lee de un select y por tanto
		//nunca deberia ser null.
		if(StringUtils.isEmpty(param.getCodVoz())){
				if(StringUtils.isEmpty(param.getCodTipoVoz())){
					resultado = "-3";
				}else{
				String maxVoz = W83bFactoriaDAO.getMantenimientosDAO().maxCodVoces(param.getCodTipoVoz());	
				maxVoz = String.valueOf(Integer.parseInt(maxVoz)+1);//NOPMD
				resultado = maxVoz;
				param.setCodVoz(maxVoz);
					if(StringUtils.isNotEmpty(param.getDescVoz())){
						W83bFactoriaDAO.getMantenimientosDAO().anyadirVoces(param);
					}else{
						resultado = "-2";
					}
			}
		}else {
			if(StringUtils.isEmpty(param.getCodTipoVoz())){
				resultado = "-3";
			}else{
				if(!W83bFactoriaDAO.getMantenimientosDAO().existeVoces(param.getCodVoz(), param.getCodTipoVoz())){					
					if(StringUtils.isNotEmpty(param.getDescVoz())){
						W83bFactoriaDAO.getMantenimientosDAO().anyadirVoces(param);
					}else{
						resultado = "-2";
					}
				}else{
					resultado = "-1";				
				}
			}
		}
		
		return resultado;
	}

	public String borrarVoces(ArrayList param) throws Exception,
			RemoteException {
				
		W83bUsuarioXLNetsBean userBean = (W83bUsuarioXLNetsBean)param.get(param.size()-1);
		param.remove(param.size()-1);
		String resultado = null;
		int i = 0;
		while(i<param.size()){
			//Como necesito el codVoz y el codTipoVoz hago un nuevo array con ellos.
			ArrayList binomioVozTipoVoz = new ArrayList();//NOPMD
			//Añado primero el codVoz.
			binomioVozTipoVoz.add(param.get(i));
			//Añado despues el codTipoVoz.
			binomioVozTipoVoz.add(param.get(i+1));
			//Envio este array para que sea borrado.
			resultado =  W83bFactoriaDAO.getMantenimientosDAO().borrarVoces(binomioVozTipoVoz,userBean);
			//Paso a coger la siguiente dupla.
			i = i+2;
		}
		return resultado;
	}

	public List buscarVoces(W83bVocesBean param) throws Exception {
		
		List listaVoces = W83bFactoriaDAO.getMantenimientosDAO().buscarVoces(param);
		
		return listaVoces;	
	}

	public W83bVocesBean detalleVoces(W83bVocesBean param) throws Exception {
						
		w83b.w83bBeans.W83bVocesBean voces = W83bFactoriaDAO.getMantenimientosDAO().detalleVoces(param);	
		
		return voces;
	}

	public String modificarVoces(W83bVocesBean param) throws Exception {
				
		String resultado = "0";		
		if(StringUtils.isNotEmpty(param.getDescVoz())){
			resultado = W83bFactoriaDAO.getMantenimientosDAO().modificarVoces(param);
		}else{
			resultado = "-2";
		}			
		return resultado;
	}

	
}